# 场景识别功能已注释，云侧不再进行场景识别
# 此文件包含场景VLM模板，已全部注释

# from typing import Dict, Any, List
# import json
# from utils.logger import emobot_logger

# logger = emobot_logger.get_logger()


# class SceneTemplates:
#     """场景模板服务，用于构建VLM识别prompt"""

#     @staticmethod
#     def build_scene_recognition_prompt() -> str:
#         """构建场景识别的prompt"""
#         return """
#         请分析这张图片，识别出其中的场景信息。你需要提供以下信息：

#         1. **scene**: 场景名称（例如：会议室、厨房、卧室、客厅、办公室、教室等）
#         ## 重要约束：
#             **你只能识别以下预定义的场景类型，绝对不能识别其他场景：**
            
#             ### OFFICE_SPACE_SCENE（仅限以下）：
#             - reception_area
#             - open_office 
#             - private_office
#             - meeting_room
#             - printing_area
#             - lounge_area
            
#             ### FAMILY_SPACE_SCENE（仅限以下）：
#             - entryway
#             - living_room
#             - dining_room
#             - kitchen
#             - bedroom
#             - bathroom
#             - master_bathroom
#             - laundry_room
#             - home_office
#             - basement
#             - garage
#             - mudroom
#             - attic
#         ## 识别规则：
#             **严格限制**：只能从上述预定义场景中选择，不能识别为"户外"、"公园"、"街道"等未定义的场景
#             **场景判断**：根据图像中的物品、布局、装饰风格来判断最匹配的场景
#             **物品分析**：仔细识别图像中的家具、设备、装饰品等
#             **空间特征**：注意墙壁、地板、天花板、门窗等建筑特征
#         ## 绝对禁止识别的场景：
#             - 户外环境（公园、街道、广场、花园等）
#             - 公共场所（商场、医院、学校、图书馆等）
#             - 交通工具（汽车、火车、飞机、轮船等）
#             - 自然环境（海滩、山区、森林、草原等）
#             - 天气状况（雨天、晴天、雪地等）
#             - 时间状态（夜晚、白天、黄昏、黎明等）

#         2. **platform**: 平台位置（例如：桌子上、地板上、书架上、床上、椅子上等）
#         ## 重要约束：
#             **必须从以下预定义位置中选择，不能随意描述：**
            
#             ### OFFICE_SPACE_SCENE：
#             **reception_area:**
#             - 接待台表面
#             - 咖啡桌表面  
#             - 杂志架旁
            
#             **open_office:**
#             - 工作站桌角
#             - 分区屏风顶部
#             - 电脑架旁
            
#             **private_office:**
#             - 办公桌角落
#             - 书架层板
#             - 访客椅旁
            
#             **meeting_room:**
#             - 会议桌中央
#             - 白板附近
#             - 投影仪旁
            
#             **printing_area:**
#             - 打印机顶部
#             - 工作台表面
#             - 纸张架旁
            
#             **lounge_area:**
#             - 沙发扶手
#             - 餐桌表面
#             - 咖啡机旁
            
#             ### FAMILY_SPACE_SCENE：
#             **entryway:**
#             - 控制台表面
#             - 鞋柜顶部
            
#             **living_room:**
#             - 沙发扶手
#             - 茶几表面
#             - 电视柜顶部
            
#             **dining_room:**
#             - 餐桌表面
#             - 餐椅扶手
#             - 餐边柜顶部
            
#             **kitchen:**
#             - 岛台表面
#             - 橱柜顶部
#             - 水槽台面
            
#             **bedroom:**
#             - 床头柜表面
#             - 梳妆台表面
#             - 床面
            
#             **bathroom:**
#             - 水槽台面
#             - 马桶水箱顶部
            
#             **master_bathroom:**
#             - 双水槽台面
#             - 整体浴柜顶部
            
#             **laundry_room:**
#             - 洗衣机顶部
#             - 折叠台表面
            
#             **home_office:**
#             - 书桌角落
#             - 书架层板
            
#             **basement:**
#             - 娱乐柜顶部
#             - 沙发扶手
            
#             **garage:**
#             - 工作台表面
#             - 储藏架顶部
            
#             **mudroom:**
#             - 托盘表面
            
#             **attic:**
#         - 储物箱顶部
        
#         ## 平台位置验证规则：
#             **严格匹配**：平台位置必须完全匹配场景模板中预定义的名称
#             **场景相关**：不同场景有不同的允许平台位置，不能混用
#             **描述准确**：使用模板中定义的准确名称，不能随意描述
#             **权重考虑**：优先选择权重较高的平台位置
#             **禁止通用**：绝对不要使用"桌子上"、"地板上"、"椅子上"等通用平台描述

#         3. **items**: 图片中可见的物品列表（例如：[电脑, 椅子, 桌子, 书籍, 台灯, 水杯]）

#         请严格按照以下JSON格式返回：
#         {
#             "scene": "场景名称",
#             "platform": "平台位置", 
#             "items": ["物品1", "物品2", "物品3", ...]
#         }

#         要求：
#         - scene要简洁准确，使用中文
#         - platform要描述物品放置的具体位置,严格遵循场景模板定义，绝对不能返回定义之外的平台名称
#         - items要列出所有清晰可见的物品，使用中文，不要包含重复项
#         - 如果图像显示的是户外环境，请选择最接近的室内场景类型
#         - 如果无法确定具体场景，选择"open_office"或"living_room"等通用场景
#         - 绝对不要返回预定义场景列表之外的场景名称
#         - 只返回JSON格式，不要包含其他文字说明
#         """

#     @staticmethod
#     def build_scene_validation_prompt(scene_data: Dict[str, Any]) -> str:
#         """构建场景验证的prompt"""
#         return f"""
#         请验证以下场景信息的合理性：

#         场景名称：{scene_data.get('scene', '')}
#         平台位置：{scene_data.get('platform', '')}
#         物品列表：{', '.join(scene_data.get('items', []))}

#         请判断：
#         1. 场景名称是否合适
#         2. 平台位置是否合理
#         3. 物品是否与场景匹配

#         返回JSON格式：
#         {{
#             "is_valid": true/false,
#             "suggestions": ["修改建议1", "修改建议2"],
#             "confidence": 0.8
#         }}
#         """

#     @staticmethod
#     def get_common_scenes() -> List[str]:
#         """获取常见场景列表"""
#         return [
#             "会议室",
#             "厨房",
#             "卧室",
#             "客厅",
#             "办公室",
#             "教室",
#             "餐厅",
#             "书房",
#             "浴室",
#             "阳台",
#             "车库",
#             "花园",
#             "健身房",
#             "游戏室",
#             "儿童房",
#             "客房",
#             "储藏室",
#             "洗衣房",
#             "玄关",
#             "走廊",
#         ]

#     @staticmethod
#     def get_common_platforms() -> List[str]:
#         """获取常见平台位置列表"""
#         return [
#             "桌子上",
#             "地板上",
#             "书架上",
#             "床上",
#             "椅子上",
#             "沙发上",
#             "柜子上",
#             "台面上",
#             "窗台上",
#             "墙壁上",
#             "天花板上",
#             "门后",
#             "角落里",
#             "中央",
#         ]

#     @staticmethod
#     def get_common_items() -> List[str]:
#         """获取常见物品列表"""
#         return [
#             "电脑",
#             "椅子",
#             "桌子",
#             "书籍",
#             "台灯",
#             "水杯",
#             "手机",
#             "键盘",
#             "鼠标",
#             "显示器",
#             "沙发",
#             "电视",
#             "空调",
#             "风扇",
#             "床",
#             "枕头",
#             "被子",
#             "衣柜",
#             "镜子",
#             "牙刷",
#             "毛巾",
#             "洗发水",
#             "沐浴露",
#             "锅",
#             "碗",
#             "筷子",
#             "勺子",
#             "冰箱",
#             "微波炉",
#             "洗衣机",
#             "电视柜",
#             "花瓶",
#             "绿植",
#             "相框",
#             "钟表",
#         ]

#     @staticmethod
#     def validate_scene_data(scene_data: Dict[str, Any]) -> Dict[str, Any]:
#         """验证场景数据"""
#         validation_result = {"is_valid": True, "suggestions": [], "confidence": 1.0}

#         # 验证必需字段
#         if not scene_data.get("scene"):
#             validation_result["is_valid"] = False
#             validation_result["suggestions"].append("缺少场景名称")

#         if not scene_data.get("platform"):
#             validation_result["is_valid"] = False
#             validation_result["suggestions"].append("缺少平台位置")

#         if not scene_data.get("items") or not isinstance(scene_data.get("items"), list):
#             validation_result["is_valid"] = False
#             validation_result["suggestions"].append("物品列表格式不正确")

#         # 验证场景名称合理性
#         scene = scene_data.get("scene", "")
#         common_scenes = SceneTemplates.get_common_scenes()
#         if scene not in common_scenes:
#             validation_result["confidence"] *= 0.8
#             validation_result["suggestions"].append(f"场景名称'{scene}'不在常见场景列表中")

#         # 验证平台位置合理性
#         platform = scene_data.get("platform", "")
#         common_platforms = SceneTemplates.get_common_platforms()
#         if platform not in common_platforms:
#             validation_result["confidence"] *= 0.7
#             validation_result["suggestions"].append(f"平台位置'{platform}'不在常见平台列表中")

#         return validation_result

#     @staticmethod
#     def clean_scene_data(scene_data: Dict[str, Any]) -> Dict[str, Any]:
#         """清理和标准化场景数据"""
#         cleaned_data = scene_data.copy()

#         # 清理scene
#         if "scene" in cleaned_data:
#             cleaned_data["scene"] = cleaned_data["scene"].strip()

#         # 清理platform
#         if "platform" in cleaned_data:
#             cleaned_data["platform"] = cleaned_data["platform"].strip()

#         # 清理items
#         if "items" in cleaned_data and isinstance(cleaned_data["items"], list):
#             cleaned_items = []
#             for item in cleaned_data["items"]:
#                 if isinstance(item, str) and item.strip():
#                     cleaned_items.append(item.strip())
#             cleaned_data["items"] = cleaned_items

#         return cleaned_data